package com.my.study.springframework.bean.factory;

import com.my.study.springframework.bean.BeansException;
import com.my.study.springframework.bean.factory.config.AutowireCapableBeanFactory;
import com.my.study.springframework.bean.factory.config.BeanDefinition;
import com.my.study.springframework.bean.factory.config.BeanPostProcessor;
import com.my.study.springframework.bean.factory.config.ConfigurableBeanFactory;

/**
 * @author: yidujun
 * @create: 2021/06/22 13:50
 */
public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory {

    /**
     * 根据beanName获取BeanDefinition
     *
     * @param beanName
     * @return
     * @throws BeansException
     */
    BeanDefinition getBeanDefinition(String beanName) throws BeansException;

    /**
     * 预先实例化单例
     *
     * @throws BeansException
     */
    void preInstantiateSingletons() throws BeansException;

}
